package com.redare.dev.smart.generator.sdk.utils;

import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;

import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * @description 实体Set方法
 * @date 2020-1-14 10:04:42
 * @author WanJie.Peng
 */
public class BeanSetUtils {

    /**
     * @description 金额转换千位符金额
     * @param money
     * @return
     */
    public static String moneySet(BigDecimal money){
        String moneyStr = null;
        if( money == null || money.compareTo(new BigDecimal("0.00") ) == 0){
            moneyStr = "0.00";
        }else{
            DecimalFormat df = new DecimalFormat("#,###.00");
//            moneyStr = df.format(money);
            moneyStr = String.format("%,.2f",money);
        }
        return moneyStr;
    }

    /**
     * 转千位符的时候允许返回为null
     * @param money
     * @param isReturnNUll
     * @return
     */
    public static String moneySet(BigDecimal money, Boolean isReturnNUll){
        if( money == null || money.compareTo(BigDecimal.ZERO) == 0){
            return null;
        }
        return BeanSetUtils.moneySet(money);
    }

    // 字符转BigDecimal
    public static BigDecimal strToBigDecimal(String moneyStr){
        if( StringUtils.isBlank( moneyStr ) ){
            return new BigDecimal("0.00");
        }
        String res = moneyStr.replaceAll(",", "");
        return new BigDecimal( res );
    }

    public static BigDecimal getBigDecimal(BigDecimal money) {
        return money == null ? new BigDecimal("0.00") : money;
    }

    /**
     * 如果 数值为0的时候返回为null
     * @param money
     * @return
     */
    public static BigDecimal getBigDecimalCanNullNoZERO(BigDecimal money) {
        if( money == null || money.compareTo(BigDecimal.ZERO) == 0 ){
            return null;
        }else {
            return money;
        }
    }

    /**
     * bigDecimal数值添加 ,防止报null 异常
     * @param num1
     * @param num2
     * @return
     */
    public static BigDecimal bigDecimalAdd(BigDecimal num1, BigDecimal num2){
        if( num1 == null && num2 == null){
            return null;
        }
        if( num1 != null && num2 == null){
            return num1;
        }
        if( num1 == null && num2 != null){
            return num2;
        }
        return num1.add(num2);
    }

    /**
     * bigDecimal数值添加,防止报null 异常，结果为0时返回null
     * @param num1
     * @param num2
     * @param returnNull
     * @return
     */
    public static BigDecimal bigDecimalAdd(BigDecimal num1, BigDecimal num2, Boolean returnNull){
        BigDecimal num = BeanSetUtils.bigDecimalAdd(num1, num2);
        if( !BooleanUtils.isTrue(returnNull) ){
            return num;
        }
        if(num == null || num.compareTo(BigDecimal.ZERO) == 0){
            return null;
        }else {
            return num;
        }
    }


    public static void main(String[] args) {
        BigDecimal a = BeanSetUtils.strToBigDecimal("9,117,189.45");
        System.out.println("end" );
    }

}
